﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Data.SqlClient;
using System.Data;

namespace Controller
{
    public class ClsDBController
    {
        SqlConnection connect;
        SqlCommand command;
        ClsSystemController controller;
        string connectionString;

        public ClsDBController(ClsSystemController wilkeController)
        {
            controller = wilkeController;
            connectionString = @"DATA Source=195.181.8.201;Initial Catalog=WilkeGruppe6a;user Id=sa;password=Cisco2011";

            connect = new SqlConnection(connectionString);
            command = new SqlCommand();
            command.Connection = connect;
            command.CommandType = CommandType.StoredProcedure;
        }

        public void OpdaterFejllog(string fejlType, string fejlStacking, string fejlPrioritet, DateTime fejlDato)
        {
            command.CommandText = "IndlæsData"; // stored procedure
            command.Parameters.Clear(); // Clear parameterne så der ikke er noget.
            SqlParameter par;

            par = new SqlParameter("@fejlType", SqlDbType.VarChar);
            par.Value = fejlType;
            command.Parameters.Add(par);

            par = new SqlParameter("@fejlStacking", SqlDbType.VarChar);
            par.Value = fejlStacking;
            command.Parameters.Add(par);

            par = new SqlParameter("@fejlPrioritet", SqlDbType.VarChar);
            par.Value = fejlPrioritet;
            command.Parameters.Add(par);

            par = new SqlParameter("@fejlDato", SqlDbType.Date);
            par.Value = fejlDato;
            command.Parameters.Add(par);

            try
            {
                connect.Open(); // åbner forbindelse til databasen.
                command.ExecuteNonQuery(); // den executer ordren uden at sende noget tilbage til databasen
            }

            catch (SqlException e)
            {
                throw e; 
            }

            finally
            {
                if (connect.State == ConnectionState.Open)
                {
                    connect.Close(); //afslutter forbindelsen til databasen lige meget hvad.
                }
            }
        }

        public void OpdaterMedarbejdere(int medarbejderID, string navn, string mail)
        {
            // Denne metode er med vilje lavet "forkert". Der er ingen stored procedure ved dette navn.
            // formålet er at fremprovokere en fejl ved forsøg på upload til et sted der ikke findes.
            command.CommandText = "OpdaterMedarbejdere";
            command.Parameters.Clear();

            SqlParameter par = new SqlParameter("@medarbejderID", SqlDbType.Int);
            par.Value = medarbejderID;
            command.Parameters.Add(par);

            par = new SqlParameter("@navn", SqlDbType.VarChar);
            par.Value = navn;
            command.Parameters.Add(par);

            par = new SqlParameter("@mail", SqlDbType.VarChar);
            par.Value = mail;
            command.Parameters.Add(par);

            try
            {
                connect.Open();
                command.ExecuteNonQuery();
            }

            catch (SqlException se)
            {
                throw se;
            }

            finally
            {
                if (connect.State == ConnectionState.Open)
                {
                    connect.Close();
                }
            }
        }
    }
}
